home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Resources.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  10.3 KB  |  334 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Resources.mod
  3.  
  4.      Contains:    Resource Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21.   (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$IF UNDEFINED SystemSevenFiveOrLater *)
  24.   (*$SET SystemSevenFiveOrLater FALSE*)
  25. (*$END*)
  26. (*$IF UNDEFINED SystemSevenOrLater *)
  27.   (*$IF GENERATINGCFM *)
  28.     (*$SET SystemSevenOrLater TRUE*)
  29.   (*$ELSE*)
  30.     (*$SET SystemSevenOrLater SystemSevenFiveOrLater*)
  31.   (*$END*)
  32. (*$END*)
  33. (*$IF UNDEFINED SystemSixOrLater *)
  34.   (*$SET SystemSixOrLater SystemSevenOrLater*)
  35. (*$END*)
  36. (*$TAGS-*)
  37. (*$CALLING PASCAL*)
  38. MODULE Resources;
  39.  
  40. IMPORT SYSTEM, Types, Files;
  41.  
  42. (* $PUSH*)
  43. (* $ALIGN MAC68K*)
  44. (* $LibExport+*)
  45.  
  46. CONST
  47.     resSysHeap*                    = 64;                            (*System or application heap?*)
  48.     resPurgeable*                = 32;                            (*Purgeable resource?*)
  49.     resLocked*                    = 16;                            (*Load it in locked?*)
  50.     resProtected*                = 8;                            (*Protected?*)
  51.     resPreload*                    = 4;                            (*Load in on OpenResFile?*)
  52.     resChanged*                    = 2;                            (*Resource changed?*)
  53.     mapReadOnly*                    = 128;                            (*Resource file read-only*)
  54.     mapCompact*                    = 64;                            (*Compact resource file*)
  55.     mapChanged*                    = 32;                            (*Write map out at update*)
  56.     kResFileNotOpened*            = -1;                            (*ref num return as error when opening a resource file*)
  57.     kSystemResFile*                = 0;                            (*this is the default ref num to the system file*)
  58.  
  59. TYPE
  60.     (*
  61.         ResErrProcPtr uses register based parameters on the 68k and cannot
  62.         be written in or called from a high-level language without the help of
  63.         mixed mode or assembly glue.
  64.  
  65.         In*:
  66.          => thErr           D0.W
  67.     *)
  68.     ResErrProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ResErr*(thErr: Types.OSErr); *)
  69.     ResErrUPP* = Types.UniversalProcPtr;
  70.  
  71. CONST
  72.     uppResErrProcInfo* = $00001002; (* Register PROCEDURE (2 bytes in D0); *)
  73.  
  74. PROCEDURE NewResErrProc*(userRoutine: ResErrProcPtr): ResErrUPP;
  75.     (*$IF NOT GENERATINGCFM *)
  76.     INLINE PASCAL $2E9F;
  77.     (*$END*)
  78.  
  79. PROCEDURE CallResErrProc*(thErr: Types.OSErr; userRoutine: ResErrUPP);
  80.     (*$IF NOT GENERATINGCFM*)
  81.     INLINE PASCAL ; (*••*)
  82.     (*To be implemented*:  Glue to move parameters into registers.*)
  83.     (*$END*)
  84. (*    These are no longer needed.
  85.  *    CFM provides us with the necessary run time initialization
  86.  *    entry points.
  87.  *)
  88.  
  89. PROCEDURE InitResources*(): INTEGER;
  90.     (*$IF NOT GENERATINGCFM*)
  91.     INLINE PASCAL $A995;
  92.     (*$END*)
  93. PROCEDURE RsrcZoneInit*;
  94.     (*$IF NOT GENERATINGCFM*)
  95.     INLINE PASCAL $A996;
  96.     (*$END*)
  97. PROCEDURE CloseResFile*(refNum: INTEGER);
  98.     (*$IF NOT GENERATINGCFM*)
  99.     INLINE PASCAL $A99A;
  100.     (*$END*)
  101. PROCEDURE ResError*(): INTEGER;
  102.     (*$IF NOT GENERATINGCFM*)
  103.     INLINE PASCAL $A9AF;
  104.     (*$END*)
  105. PROCEDURE CurResFile*(): INTEGER;
  106.     (*$IF NOT GENERATINGCFM*)
  107.     INLINE PASCAL $A994;
  108.     (*$END*)
  109. PROCEDURE HomeResFile*(theResource: Types.Handle): INTEGER;
  110.     (*$IF NOT GENERATINGCFM*)
  111.     INLINE PASCAL $A9A4;
  112.     (*$END*)
  113. PROCEDURE CreateResFile*(fileName: Types.ConstStr255Param);
  114.     (*$IF NOT GENERATINGCFM*)
  115.     INLINE PASCAL $A9B1;
  116.     (*$END*)
  117. PROCEDURE OpenResFile*(fileName: Types.ConstStr255Param): INTEGER;
  118.     (*$IF NOT GENERATINGCFM*)
  119.     INLINE PASCAL $A997;
  120.     (*$END*)
  121. PROCEDURE UseResFile*(refNum: INTEGER);
  122.     (*$IF NOT GENERATINGCFM*)
  123.     INLINE PASCAL $A998;
  124.     (*$END*)
  125. PROCEDURE CountTypes*(): INTEGER;
  126.     (*$IF NOT GENERATINGCFM*)
  127.     INLINE PASCAL $A99E;
  128.     (*$END*)
  129. PROCEDURE Count1Types*(): INTEGER;
  130.     (*$IF NOT GENERATINGCFM*)
  131.     INLINE PASCAL $A81C;
  132.     (*$END*)
  133. PROCEDURE GetIndType*(VAR theType: Types.ResType; index: INTEGER);
  134.     (*$IF NOT GENERATINGCFM*)
  135.     INLINE PASCAL $A99F;
  136.     (*$END*)
  137. PROCEDURE Get1IndType*(VAR theType: Types.ResType; index: INTEGER);
  138.     (*$IF NOT GENERATINGCFM*)
  139.     INLINE PASCAL $A80F;
  140.     (*$END*)
  141. PROCEDURE SetResLoad*(load: BOOLEAN);
  142.     (*$IF NOT GENERATINGCFM*)
  143.     INLINE PASCAL $A99B;
  144.     (*$END*)
  145. PROCEDURE CountResources*(theType: Types.ResType): INTEGER;
  146.     (*$IF NOT GENERATINGCFM*)
  147.     INLINE PASCAL $A99C;
  148.     (*$END*)
  149. PROCEDURE Count1Resources*(theType: Types.ResType): INTEGER;
  150.     (*$IF NOT GENERATINGCFM*)
  151.     INLINE PASCAL $A80D;
  152.     (*$END*)
  153. PROCEDURE GetIndResource*(theType: Types.ResType; index: INTEGER): Types.Handle;
  154.     (*$IF NOT GENERATINGCFM*)
  155.     INLINE PASCAL $A99D;
  156.     (*$END*)
  157. PROCEDURE Get1IndResource*(theType: Types.ResType; index: INTEGER): Types.Handle;
  158.     (*$IF NOT GENERATINGCFM*)
  159.     INLINE PASCAL $A80E;
  160.     (*$END*)
  161. PROCEDURE GetResource*(theType: Types.ResType; theID: INTEGER): Types.Handle;
  162.     (*$IF NOT GENERATINGCFM*)
  163.     INLINE PASCAL $A9A0;
  164.     (*$END*)
  165. PROCEDURE Get1Resource*(theType: Types.ResType; theID: INTEGER): Types.Handle;
  166.     (*$IF NOT GENERATINGCFM*)
  167.     INLINE PASCAL $A81F;
  168.     (*$END*)
  169. PROCEDURE GetNamedResource*(theType: Types.ResType; name: Types.ConstStr255Param): Types.Handle;
  170.     (*$IF NOT GENERATINGCFM*)
  171.     INLINE PASCAL $A9A1;
  172.     (*$END*)
  173. PROCEDURE Get1NamedResource*(theType: Types.ResType; name: Types.ConstStr255Param): Types.Handle;
  174.     (*$IF NOT GENERATINGCFM*)
  175.     INLINE PASCAL $A820;
  176.     (*$END*)
  177. PROCEDURE LoadResource*(theResource: Types.Handle);
  178.     (*$IF NOT GENERATINGCFM*)
  179.     INLINE PASCAL $A9A2;
  180.     (*$END*)
  181. PROCEDURE ReleaseResource*(theResource: Types.Handle);
  182.     (*$IF NOT GENERATINGCFM*)
  183.     INLINE PASCAL $A9A3;
  184.     (*$END*)
  185. PROCEDURE DetachResource*(theResource: Types.Handle);
  186.     (*$IF NOT GENERATINGCFM*)
  187.     INLINE PASCAL $A992;
  188.     (*$END*)
  189. PROCEDURE UniqueID*(theType: Types.ResType): INTEGER;
  190.     (*$IF NOT GENERATINGCFM*)
  191.     INLINE PASCAL $A9C1;
  192.     (*$END*)
  193. PROCEDURE Unique1ID*(theType: Types.ResType): INTEGER;
  194.     (*$IF NOT GENERATINGCFM*)
  195.     INLINE PASCAL $A810;
  196.     (*$END*)
  197. PROCEDURE GetResAttrs*(theResource: Types.Handle): INTEGER;
  198.     (*$IF NOT GENERATINGCFM*)
  199.     INLINE PASCAL $A9A6;
  200.     (*$END*)
  201. PROCEDURE GetResInfo*(theResource: Types.Handle; VAR theID: INTEGER; VAR theType: Types.ResType; VAR name: Types.Str255);
  202.     (*$IF NOT GENERATINGCFM*)
  203.     INLINE PASCAL $A9A8;
  204.     (*$END*)
  205. PROCEDURE SetResInfo*(theResource: Types.Handle; theID: INTEGER; name: Types.ConstStr255Param);
  206.     (*$IF NOT GENERATINGCFM*)
  207.     INLINE PASCAL $A9A9;
  208.     (*$END*)
  209. PROCEDURE AddResource*(theData: Types.Handle; theType: Types.ResType; theID: INTEGER; name: Types.ConstStr255Param);
  210.     (*$IF NOT GENERATINGCFM*)
  211.     INLINE PASCAL $A9AB;
  212.     (*$END*)
  213. PROCEDURE GetResourceSizeOnDisk*(theResource: Types.Handle): LONGINT;
  214.     (*$IF NOT GENERATINGCFM*)
  215.     INLINE PASCAL $A9A5;
  216.     (*$END*)
  217. PROCEDURE GetMaxResourceSize*(theResource: Types.Handle): LONGINT;
  218.     (*$IF NOT GENERATINGCFM*)
  219.     INLINE PASCAL $A821;
  220.     (*$END*)
  221. PROCEDURE RsrcMapEntry*(theResource: Types.Handle): LONGINT;
  222.     (*$IF NOT GENERATINGCFM*)
  223.     INLINE PASCAL $A9C5;
  224.     (*$END*)
  225. PROCEDURE SetResAttrs*(theResource: Types.Handle; attrs: INTEGER);
  226.     (*$IF NOT GENERATINGCFM*)
  227.     INLINE PASCAL $A9A7;
  228.     (*$END*)
  229. PROCEDURE ChangedResource*(theResource: Types.Handle);
  230.     (*$IF NOT GENERATINGCFM*)
  231.     INLINE PASCAL $A9AA;
  232.     (*$END*)
  233. PROCEDURE RemoveResource*(theResource: Types.Handle);
  234.     (*$IF NOT GENERATINGCFM*)
  235.     INLINE PASCAL $A9AD;
  236.     (*$END*)
  237. PROCEDURE UpdateResFile*(refNum: INTEGER);
  238.     (*$IF NOT GENERATINGCFM*)
  239.     INLINE PASCAL $A999;
  240.     (*$END*)
  241. PROCEDURE WriteResource*(theResource: Types.Handle);
  242.     (*$IF NOT GENERATINGCFM*)
  243.     INLINE PASCAL $A9B0;
  244.     (*$END*)
  245. PROCEDURE SetResPurge*(install: BOOLEAN);
  246.     (*$IF NOT GENERATINGCFM*)
  247.     INLINE PASCAL $A993;
  248.     (*$END*)
  249. PROCEDURE GetResFileAttrs*(refNum: INTEGER): INTEGER;
  250.     (*$IF NOT GENERATINGCFM*)
  251.     INLINE PASCAL $A9F6;
  252.     (*$END*)
  253. PROCEDURE SetResFileAttrs*(refNum: INTEGER; attrs: INTEGER);
  254.     (*$IF NOT GENERATINGCFM*)
  255.     INLINE PASCAL $A9F7;
  256.     (*$END*)
  257. PROCEDURE OpenRFPerm*(fileName: Types.ConstStr255Param; vRefNum: INTEGER; permission: Types.ByteParameter): INTEGER;
  258.     (*$IF NOT GENERATINGCFM*)
  259.     INLINE PASCAL $A9C4;
  260.     (*$END*)
  261. PROCEDURE RGetResource*(theType: Types.ResType; theID: INTEGER): Types.Handle;
  262.     (*$IF NOT GENERATINGCFM*)
  263.     INLINE PASCAL $A80C;
  264.     (*$END*)
  265. (*$IF SystemSevenOrLater *)
  266. PROCEDURE HOpenResFile*(vRefNum: INTEGER; dirID: LONGINT; fileName: Types.ConstStr255Param; permission: Types.ByteParameter): INTEGER;
  267.     (*$IF NOT GENERATINGCFM*)
  268.     INLINE PASCAL $A81A;
  269.     (*$END*)
  270. (*$ELSE*)
  271. PROCEDURE HOpenResFile*(vRefNum: INTEGER; dirID: LONGINT; fileName: Types.ConstStr255Param; permission: Types.ByteParameter): INTEGER;
  272.     EXTERNAL PASCAL;
  273. (*$END*)
  274. (*$IF SystemSevenOrLater *)
  275. PROCEDURE HCreateResFile*(vRefNum: INTEGER; dirID: LONGINT; fileName: Types.ConstStr255Param);
  276.     (*$IF NOT GENERATINGCFM*)
  277.     INLINE PASCAL $A81B;
  278.     (*$END*)
  279. (*$ELSE*)
  280. PROCEDURE HCreateResFile*(vRefNum: INTEGER; dirID: LONGINT; fileName: Types.ConstStr255Param);
  281.     EXTERNAL PASCAL;
  282. (*$END*)
  283. PROCEDURE FSpOpenResFile*((*CONST*)VAR spec: Files.FSSpec; permission: Types.ByteParameter): INTEGER;
  284.     (*$IF NOT GENERATINGCFM*)
  285.     INLINE PASCAL $700D, $AA52;
  286.     (*$END*)
  287. PROCEDURE FSpCreateResFile*((*CONST*)VAR spec: Files.FSSpec; creator: Types.OSType; fileType: Types.OSType; scriptTag: Types.ScriptCode);
  288.     (*$IF NOT GENERATINGCFM*)
  289.     INLINE PASCAL $700E, $AA52;
  290.     (*$END*)
  291. (*  partial resource calls  *)
  292. PROCEDURE ReadPartialResource*(theResource: Types.Handle; offset: LONGINT; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT);
  293.     (*$IF NOT GENERATINGCFM*)
  294.     INLINE PASCAL $7001, $A822;
  295.     (*$END*)
  296. PROCEDURE WritePartialResource*(theResource: Types.Handle; offset: LONGINT; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT);
  297.     (*$IF NOT GENERATINGCFM*)
  298.     INLINE PASCAL $7002, $A822;
  299.     (*$END*)
  300. PROCEDURE SetResourceSize*(theResource: Types.Handle; newSize: LONGINT);
  301.     (*$IF NOT GENERATINGCFM*)
  302.     INLINE PASCAL $7003, $A822;
  303.     (*$END*)
  304. PROCEDURE GetNextFOND*(fondHandle: Types.Handle): Types.Handle;
  305.     (*$IF NOT GENERATINGCFM*)
  306.     INLINE PASCAL $700A, $A822;
  307.     (*$END*)
  308. (* Use TempInsertROMMap to force the ROM resource map to be
  309.    inserted into the chain in front of the system. Note that
  310.    this call is only temporary - the modified resource chain
  311.    is only used for the next call to the resource manager.
  312.    See IM IV 19 for more information. *)
  313. PROCEDURE TempInsertROMMap*(tempResLoad: BOOLEAN);
  314.     EXTERNAL PASCAL;
  315. (*$IF OLDROUTINENAMES *)
  316. PROCEDURE SizeResource*(theResource: Types.Handle): LONGINT;
  317.     (*$IF NOT GENERATINGCFM*)
  318.     INLINE PASCAL $A9A5;
  319.     (*$END*)
  320. PROCEDURE MaxSizeRsrc*(theResource: Types.Handle): LONGINT;
  321.     (*$IF NOT GENERATINGCFM*)
  322.     INLINE PASCAL $A821;
  323.     (*$END*)
  324. PROCEDURE RmveResource*(theResource: Types.Handle);
  325.     (*$IF NOT GENERATINGCFM*)
  326.     INLINE PASCAL $A9AD;
  327.     (*$END*)
  328. (*$END*)
  329.  
  330. (* $ALIGN RESET*)
  331. (* $POP*)
  332.  
  333.  END Resources.
  334.